// 写的是函数，返回一个action对象
import * as types from '../actionTypes/todos';

// 删除 action 创建函数
export const delTodo = (id) => ({
  type: types.DEL_TODO,
  payload: id,
});

// 切换任务状态
export const toggleTodo = (id) => ({
  type: types.TOGGLE_TODO,
  payload: id,
});

// 添加任务
// 原来的同步action
// export const addTodo = (text) => ({
//   type: types.ADD_TODO,
//   payload: text,
// });

export const addTodo = (text) => {
  // 这个返回的函数，是给 redux-thunk 中间件用的
  return (dispatch, getState) => {
    // 执行异步操作或数据操作。
    // 假装发起请求
    const res = text;
    // // 分发对象形式的action
    // dispatch({ type: types.ADD_TODO, payload: res });

    // 使用 setTimeout 模拟发送异步请求
    setTimeout(() => {
      dispatch({ type: types.ADD_TODO, payload: res });
    }, 1500);
  };
};

// 全选/反全选
export const toggleAll = (checked) => ({
  type: types.TOGGLE_ALL,
  payload: checked,
});

// 清除已完成
export const clearDone = () => ({
  type: types.CLEAR_DONE,
});

// 更新任务
export const updateTodo = (id, text) => ({
  type: types.UPDATE_TODO,
  payload: {
    id,
    text,
  },
});
